# -*- coding: utf-8 -*-
from django import template

register = template.Library() 

def paginator(context):
    """ paginator potrzebuje czterech parametrów:
        paginator - obiekt ObjectPaginator
        paginate_by - ilość elementów na jednej stronie
        page - numer aktualnej strony
        link - url pod którym jesteśmy - można go pobrać z 'request.path'
    """
    paginator = context['paginator']
    paginate_by = context['paginate_by']
    page = context['page']
    link = context['link']

    pages = []
    for x in range(1, paginator.pages+1)[:3]:
        pages.append(x)
    if page > 1:
        pages.append(page-1)
    if page < paginator.pages:
        pages.append(page+1)
    
    pages.append(page)
    
    for x in range(1, paginator.pages+1)[-3:]:
        pages.append(x)

    #usuwa powtarzające się elementy
    u = {}
    for x in pages:
        u[x] = 1
    pages = u.keys()
    pages.sort()

    #ustala gdzie pojawią się kropki
    if page<=paginator.pages-5:
        pages.insert(len(pages)-3,'dots')
    if page>=6:
        pages.insert(3,'dots')
        
    return {
        'is_paginated': paginator.pages > 1,
        'has_next': paginator.has_next_page(page - 1),
        'has_previous': paginator.has_previous_page(page - 1),
        'page': page,
        'pages' : pages,
        'next': page + 1,
        'previous': page - 1,
        'link':link,
        'keys':context['session'].keys()}

register.inclusion_tag('templatetags/paginator.html', takes_context=True)(paginator)

